package com.jjlin.chapter_8;
import java.util.*;

public class CD9{

    //求未排序数组中累加和为给定值的最大子数组长度
    //时间复杂度为O(N),空间复杂度为O(N)
    public static int getMaxLength(int[] arr, int k){
        if(arr == null || arr.length == 0)
            return 0;
        //s(i)表示arr[0..i]之和，那么arr[(j+1)...i] = s(i) - s(j - 1)
        HashMap<Integer, Integer> map = new HashMap<>(); // key存储的是s(i)，key表示最早出现arr[0..j]=s[i]的j位置
        map.put(0, -1); // 考虑最长子数组从0开始的情况
        int len = 0;
        int sum = 0;
        for(int i = 0; i < arr.length; i++){
            sum += arr[i]; // s(i)
            if(map.containsKey(sum - k)){ // if k = arr[(j+1)...i] = s(i) - s(j)
                // len = Math.max(len, i - j),其中i - j为子数组arr[(j+1)...i]的长度
                len = Math.max(i - map.get(sum - k), len);
            }
            if(!map.containsKey(sum))
                map.put(sum, i);
        }
        return len;
    }
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int k = sc.nextInt();
        int[] arr = new int[n];
        for(int i = 0; i < n; i++)
            arr[i] = sc.nextInt();
        System.out.println(getMaxLength(arr, k));
    }
}